package cliente.pagina.contenido.actividades;

import cliente.pagina.contenido.*;
import comun.constantes.*;
import cliente.pagina.*;
import javazoom.upload.*;
import comun.constantes.RECURSOS;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

// es abtracta para unificar el comportamiento comun de todas las solapas de la pagina de materiales
// y exigir a redefinir ciertos metodos particulares de cada solapa
  abstract public class ContenidoActividad  extends VistaContenido {

  private boolean tienePermisoEnviarActividadesYVerCalificaciones;
  private String carpetaDondeAlmacenar;
  private ContenidoActividad contenidoActividad;
  private boolean tienePermisoRecibirYEvaluarActividades;
  private boolean tienePermisoEvaluarActividades;
  private boolean tienePermisoCrearActividades;

  public ContenidoActividad() {
  }

  public ContenidoActividad(Pagina pagina) {
    super(pagina);
//    this.setPagina(pagina);
    // obtener el permiso del usuario en los recursos asociados a las actividades
    // obtener permiso de recibir y evaluar actividades
  }

  // redefinida para dar la subcarpeta donde se colocarta el archivo
  protected String getSubcarpetaRecurso()
  {
      return CARPETAS_ARCHIVOS_RECURSO.ACTIVIDADES+"/";
  };

// graba el archivo si la accione es uploadfile
  protected void grabarArchivo()
  {
    try {
  /* Grabar el archivo */
      if (this.getPagina().getMrequest()!=null)
      {
        String accion = this.getPagina().getMrequest().getParameter(PARAMETROS_PAGINAS.ACCION);
        //System.out.println("Grabar archivo en Contenido Materiales carpetaDondeAlmacenar: "+carpetaDondeAlmacenar+" "+accion);
        if (accion!=null && accion.compareTo(ACCIONES_A_REALIZAR.UPLOAD)==0)
        {
//          HelperMateriales helperMateriales = new HelperMateriales(this.getPagina(),this);
          // Uses MultipartFormDataRequest to parse the HTTP request.
          MultipartFormDataRequest mrequest = this.getPagina().getMrequest();

          String descripcion = mrequest.getParameter(PARAMETROS_PAGINAS.ARCHIVO_DESCRIPCION);
          String idCarpetaDondeAlmacenar=mrequest.getParameter(PARAMETROS_PAGINAS.CARPETA_DONDE_ALMACENAR);
          //System.out.println("Grabar Archivo en Contenido Materiales carpetaDondeAlmacenar: "+carpetaDondeAlmacenar);
//          helperMateriales.grabarArchivo(mrequest, accion,descripcion,idCarpetaDondeAlmacenar);
//          helperMateriales.close();
        }
      }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }

  }


// Elimina el archivo si la accion eliminar
  protected void eliminarArchivo()
  {
    try {
  /* Eliminar el archivo */
        String accion = this.getPagina().getParameter(PARAMETROS_PAGINAS.ACCION);
        //System.out.println("Elimina archivo en Contenido Materiales carpetaDondeAlmacenar: "+carpetaDondeAlmacenar+" "+accion);
        if (accion!=null && accion.compareTo(ACCIONES_A_REALIZAR.ELIMINAR)==0)
        {
//          HelperMateriales helperMateriales = new HelperMateriales(this.getPagina(),this);
          // Uses MultipartFormDataRequest to parse the HTTP request.
          String idArchivo=this.getPagina().getParameter(PARAMETROS_PAGINAS.ID_ARCHIVO);
          //System.out.println("Elimnia Archivo en Contenido Materiales carpetaDondeAlmacenar: "+carpetaDondeAlmacenar);
//          helperMateriales.eliminarArchivo(idArchivo);
//          helperMateriales.close();
        }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }

  }


  public void setPagina(Pagina pagina)
  {

    super.setPagina(pagina);

// setea los permisos segun lo tenga configurado el usuario en la base de datos
// si el permiso es de recibir y evaluar actividades, este a su ves se particiona en dos
// en permiso de evaluacion de actividades y en permiso de creacion de actividades

    String permiso = this.getPagina().obtenerPermisoRecurso(RECURSOS.RECIBIR_Y_EVALUAR_ACTIVIDADES);
    this.setTienePermisoRecibirYEvaluarActividades((permiso.compareTo(TIPO_PERMISOS.ESCRITURA)==0) || (permiso.compareTo(TIPO_PERMISOS.LECTURA)==0));

    // ver permiso de enviar y recibir actividades
    permiso = this.getPagina().obtenerPermisoRecurso(RECURSOS.ENVIAR_ACTIVIDADES_Y_VER_CALIFICACIONES);
    this.setTienePermisoEnviarActividadesYVerCalificaciones((permiso.compareTo(TIPO_PERMISOS.ESCRITURA)==0) || (permiso.compareTo(TIPO_PERMISOS.LECTURA)==0));


    // de acuerdo al permiso crea el contenido particular
    if(isTienePermisoEnviarActividadesYVerCalificaciones())
      this.setContenidoActividad(new ContenidoEnviarYVerActividad(pagina));

    if(isTienePermisoRecibirYEvaluarActividades())
    {
      this.setContenidoActividad(new ContenidoRecibirYEvaluarActividad(pagina));
      // configuro los dos persimos asociados al de enviar y recibir actividades
      permiso = this.getPagina().obtenerPermisoRecurso(RECURSOS.EVALUAR_ACTIVIDADES);
      //System.out.println("permiso TienePermisoEvaluarActividades: "+permiso);
      this.setTienePermisoEvaluarActividades((permiso.compareTo(TIPO_PERMISOS.ESCRITURA)==0));
      permiso = this.getPagina().obtenerPermisoRecurso(RECURSOS.CREAR_ACTIVIDADES);
      //System.out.println("permiso CrearActividades: "+permiso);
      this.setTienePermisoCrearActividades((permiso.compareTo(TIPO_PERMISOS.ESCRITURA)==0));
      //System.out.println("getTienePermisoEvaluarActividades: "+this.isTienePermisoEvaluarActividades());
      //System.out.println("getTienePermisoCrearActividades: "+this.isTienePermisoCrearActividades());
    }

    // si tiene permiso para algun subRecurso se confugura de nuevo el contenido de la pagina
    if (this.getContenidoActividad()!=null)
      pagina.setVistaContenido(this.getContenidoActividad());


    //System.out.println("pagina"+pagina);
    //System.out.println("pagina:"+pagina);
    if (pagina!=null && pagina.getParameter(PARAMETROS_PAGINAS.CARPETA_DONDE_ALMACENAR)!=null)
    {
      this.carpetaDondeAlmacenar = pagina.getParameter(PARAMETROS_PAGINAS.CARPETA_DONDE_ALMACENAR);
    }

  }

  // redefinirda en cada subclase para que retorne su encabezado de la tabla
  protected String encabezadoTabla(){return "";};

// PUEDE ESTAR REDEFINIDA EN ALGUNA SUBCLASE
  protected String getHTMLTablaActividades()
  {
    String html="";
//    helpers.materiales.HelperMateriales helperMateriales = new helpers.materiales.HelperMateriales(this.getPagina(),this);


    html+="         <form action=\"\" method=\"post\" name=\"editar\" id=\"editar\">\n";
    html+="           <table width=\"570\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
    html+="             <tbody>\n";

    html+=encabezadoTabla();

    html+="             </tbody>\n";
    html+="           </table>\n";
    html+="          <div id=\"tablaAzul\">\n";
    html+="           <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" >\n";
//    html+="            <tbody>\n";
    html+="             <tr>\n";
    html+="              <th nowrap=\"nowrap\">Archivo</th>\n";
    html+="             </tr>\n";
// fin del codigode la tabla
//    html+="            </tbody>\n";
    html+="           </table>\n";
    html+="          </div>\n";

    html+="           <div id=\"ocultar\"><table border=0><tr><td><font size=-2><a style=\"font-size:7pt;text-decoration:none;color:silver\" href=\"http://www.treemenu.net/\" target=_blank>JavaScript Tree Menu</a></font></td></tr></table></div>\n";
    html+="               <span class=\"TreeviewSpanArea\"><script>initializeDocument()</script></span>\n";
    html+="             <hr />\n";


    html+="          </div>\n";
    html+="         </form>\n";

    return html;
 }



  /**
   * crea el html de para subir archivos
   * @return
   */
   protected String getHTMLSubirActividad()
   {
     String html="";
//     javazoom.upload.UploadBean upLoad = null;
//     upLoad.
     html+= "       <form action=\""+this.getPagina().getVistaContenido().getPathNombrePagina()+"\" method=\"post\" enctype=\"multipart/form-data\" name=\"subir\" id=\"subir\">\n";
     html+= "        <fieldset>\n";
     html+= "         <legend>Subir materiales</legend>\n";
     html+= "         <table width=\"570\"  border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n";
     html+= "           <tr>\n";
     html+= "            <td align=\"right\"><label for=\""+PARAMETROS_PAGINAS.UPLOADFILE+"\">Subir un archivo</label></td>\n";
     html+= "            <td><input name=\""+PARAMETROS_PAGINAS.UPLOADFILE+"\" type=\"file\" class=\"cargaInput\" id=\""+PARAMETROS_PAGINAS.UPLOADFILE+"\" size=\"55\" maxlength=\"20\" /></td>\n";
     html+= "            <td><input type=\"hidden\" name=\""+PARAMETROS_PAGINAS.ACCION+"\" value=\""+ACCIONES_A_REALIZAR.UPLOAD+"\" id=\""+PARAMETROS_PAGINAS.ACCION+"\" style=\"width:300px;\" maxlength=\"50\" />\n";
     html+= "           </tr>\n";
     html+= "           <tr>\n";
     html+= "            <td align=\"right\"><label for=\"archivoDescripcion\">Descripci&oacute;n</label></td>\n";
     html+= "            <td><input type=\"text\" name=\""+PARAMETROS_PAGINAS.ARCHIVO_DESCRIPCION+"\" id=\""+PARAMETROS_PAGINAS.ARCHIVO_DESCRIPCION+"\" style=\"width:300px;\" maxlength=\"50\" />\n";
     html+= "            <small>(opcional)</small> </td>\n";
     html+= "           </tr>\n";
     html+= "           <tr>\n";
     html+= "            <td align=\"right\"><label for=\"subirEnCarpeta\">En esta carpeta</label></td>\n";
     html+= "            <td>\n";
     html+= "              <select name=\""+PARAMETROS_PAGINAS.CARPETA_DONDE_ALMACENAR+"\" class=\"cargaInput\" id=\""+PARAMETROS_PAGINAS.CARPETA_DONDE_ALMACENAR+"\" style=\"width:300px;\" >\n";
     html+= "               <option>---------------------------Seleccionar---------------------------</option>\n";

// hacerlo dinamico
     // hacer una funcion recursiva para recorrer la estructura de directorio
//     html+= generarHTMLCarpetas(true);
     html+= "              </select>\n";
     html+= "             </td>\n";
     html+= "            </tr>\n";
     html+= "            <tr>\n";
     html+= "             <td align=\"right\">&nbsp;</td>\n";
     html+= "             <td><input name=\"btnSubir\" type=\"submit\" class=\"boton\" id=\"btnSubir\" value=\"Subir en carpeta seleccionada\" /></td>\n";
     html+= "            </tr>\n";
     html+= "         </table>\n";
     html+= "        </fieldset>\n";
     html+= "       </form>\n";

     return html;
   }


 protected String getHtmlSugerenciaTextoActividades()
 {
   String html="";
   html+= "       <br />\n";
   html+= "          <div  <center><img src=\"../../../imagenes/idea.gif\" title=\"Ayuda\" height=\"26\" width=\"26\" />\n";
   html+= "          <p class=\"recuadroAyuda\" align=\"center\">Se pueden crear carpetas con una profunidad  de hasta 3 niveles. Los nombre de archivos y carpetas pueden tener un m&aacute;ximo de 20 caracteres. Recuerde no emplear vocales acentuadas, &ntilde; ni espacios.</p></center>\n";
   html+= "          </div>\n";
   return html;
 }

  public String getHTMLVista() { 
    String html = "";
    try {
          html = "       <h1>"+this.getTitulo()+"</h1>\n";
          // la vista la devuelve el contenido especifico de acuerdo a los permisos
          // del recurso
          html+= this.getContenidoActividad().getHTMLVista();
          return html;
    } catch (Exception ex) {
      ex.printStackTrace();
      return  html = comun.MensajeDeError.ERROR_EN_LA_GENERACION_DE_LA_PAGINA;
    }  
 }




// redefino el metodo abstracto de Vista contenido
protected String getNombrePagina()
{
  return "actividades.jsp";
}

// redefino el metodo abstracto de Vista contenido
public String getTituloLink()
{
  return "\"Enviar/Evaluar Actividades\">Acti<span>"+this.getTeclaAccesoRapido()+"</span>idades";
}
public String getTeclaAccesoRapido() {	
	return "v";
}

// la redefino aca porque de acuerdo a los permisos el link debe ir a una
// pagina u otra
public String getLinkMenu()
{
   // obtiene el permiso del recurso para el aula actual
  // que esta seteada el el objeto pagina
  String permiso = this.getPagina().obtenerPermisoRecurso(RECURSOS.RECIBIR_Y_EVALUAR_ACTIVIDADES);
  //System.out.println("Recurso: "+this.getNombreRecurso());
  //System.out.println("Permiso: "+permiso);

  if (permiso == null || (permiso.compareTo(TIPO_PERMISOS.NINGUNO) == 0))
  {
    // ver si tiene permiso en el recurso RECURSOS.ENVIAR_ACTIVIDADES_Y_VER_CALIFICACIONES
    permiso = this.getPagina().obtenerPermisoRecurso(RECURSOS.ENVIAR_ACTIVIDADES_Y_VER_CALIFICACIONES);
    //System.out.println("Permiso: "+permiso);
    if (permiso == null)
    {
      // ver si tiene permiso en el recurso RECURSOS.ENVIAR_ACTIVIDADES_Y_VER_CALIFICACIONES
      return "";
    }
    if (permiso.compareTo(TIPO_PERMISOS.NINGUNO) == 0)
      return "";

    return new ContenidoEnviarYVerActividad(this.getPagina()).getHTMLLinkMenu();
  }

  if (permiso.compareTo(TIPO_PERMISOS.NINGUNO) == 0)
    return "";
  return this.getHTMLLinkMenu();
}


  protected void crearCarpeta()
  {
    try {
      /* crear la carpeta */
      // si la accion es crear carpeta, la crea
      if (this.getPagina().getMrequest()!=null)
      {
        String accion = this.getPagina().getMrequest().getParameter(PARAMETROS_PAGINAS.ACCION);
        //System.out.println("Grabar archivo en Contenido Materiales carpetaDondeAlmacenar: "+carpetaDondeAlmacenar+" "+accion);
        if (accion!=null && accion.compareTo(ACCIONES_A_REALIZAR.CREAR_CARPETA)==0)
        {
          // Uses MultipartFormDataRequest to parse the HTTP request.
/*          HelperMateriales helperMateriales = new HelperMateriales(this.getPagina(),this);
          MultipartFormDataRequest mrequest = this.getPagina().getMrequest();

          String nombreCarpeta = mrequest.getParameter(PARAMETROS_PAGINAS.NOMBRE_CARPETA);
          String idCarpetaDondeAlmacenar=mrequest.getParameter(PARAMETROS_PAGINAS.CARPETA_DONDE_ALMACENAR);
          System.out.println("Crear Carpeta en Contenido Materiales carpetaDondeAlmacenar: "+carpetaDondeAlmacenar+" "+idCarpetaDondeAlmacenar);
          helperMateriales.crearCarpeta(mrequest, accion,nombreCarpeta,idCarpetaDondeAlmacenar);
          helperMateriales.close();
  */      }
      }
    }
    catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  public boolean isTienePermisoEnviarActividadesYVerCalificaciones() {
    return tienePermisoEnviarActividadesYVerCalificaciones;
  }
  public void setTienePermisoEnviarActividadesYVerCalificaciones(boolean tienePermisoEnviarActividadesYVerCalificaciones) {
    this.tienePermisoEnviarActividadesYVerCalificaciones = tienePermisoEnviarActividadesYVerCalificaciones;
  }
  public void setContenidoActividad(ContenidoActividad contenidoActividad) {
    this.contenidoActividad = contenidoActividad;
  }
  public ContenidoActividad getContenidoActividad() {
    return contenidoActividad;
  }
  public boolean isTienePermisoEvaluarActividades() {
    return tienePermisoEvaluarActividades;
  }
  public void setTienePermisoEvaluarActividades(boolean tienePermisoEvaluarActividades) {
    this.tienePermisoEvaluarActividades = tienePermisoEvaluarActividades;
  }
  public void setTienePermisoCrearActividades(boolean tienePermisoCrearActividades) {
    this.tienePermisoCrearActividades = tienePermisoCrearActividades;
  }
  public boolean isTienePermisoCrearActividades() {
    return tienePermisoCrearActividades;
  }
  public void setTienePermisoRecibirYEvaluarActividades(boolean tienePermisoRecibirYEvaluarActividades) {
    this.tienePermisoRecibirYEvaluarActividades = tienePermisoRecibirYEvaluarActividades;
  }
  public boolean isTienePermisoRecibirYEvaluarActividades() {
    return tienePermisoRecibirYEvaluarActividades;
  }



}